using System;
using System.Collections.Generic;
using System.Text;
using WebService.BusinessEntities;
using WebService.DataAccess;

namespace WebService.BusinessLogic.Managers
{
    /// <summary>
    /// Klasa dostarczajaca funkcjonalnosci w obszarze zarzadzania
    /// systemem logowania/wylogowania 
    /// </summary>
    public class LoginManager
    {
        
        private String database;
        /// <summary>
        /// Connection-string do bazy danych
        /// </summary>
        public String Database
        {
            get { return database; }
            set { database = value; }
        }
	    
        /// <summary>
        /// Konstruktor parametrowy managera
        /// </summary>
        /// <param name="database">Connection-string do bazy danych</param>
        public LoginManager(String database)
        {
            Database = database;
        }

        /// <summary>
        /// Funkcja zapisujaca logowanie do systemu
        /// </summary>
        /// <param name="audit">Logowanie</param>
        public void InsertLoginAudit(LoginAudit audit)
        {
            LoginAuditRepository rep = new LoginAuditRepository(database);
            rep.AddLogin(audit);
        }

        /// <summary>
        /// Funkcja zapisujaca wylogowanie z systemu
        /// </summary>
        /// <param name="audit">Wylogowanie</param>
        public void InsertLogoutAudit(LoginAudit audit)
        {
            LoginAuditRepository rep = new LoginAuditRepository(database);
            rep.AddLogout(audit);
        }

        /// <summary>
        /// Funkcja pobierajaca dane o wszystkich logowaniach do systemu
        /// </summary>
        /// <returns></returns>
        public List<LoginAudit> GetAllLoginAudits()
        {
            List<LoginAudit> audits = new List<LoginAudit>();
            LoginAuditRepository rep = new LoginAuditRepository(database);
            audits = rep.GetAllLoginAuditProc();
            return audits;
        }

        /// <summary>
        /// Funkcja pobierajaca dane o wszystkich logowaniach do systemu
        /// danego uzytkownika
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public List<LoginAudit> GetUserLoginAudits(CasinoUser user)
        {
            List<LoginAudit> audits = new List<LoginAudit>();
            LoginAuditRepository rep = new LoginAuditRepository(database);
            audits = rep.GetLoginAuditProc(user.user_id);
            return audits;
        }

    }
}
